<?php

include_once '../model/Obra.php';
include_once '../model/Etapa.php';
include_once '../daos/ObraDao.php';
include_once '../daos/EtapaDao.php';
include_once '../commons/Constants.php';

class EtapaController {

    public function __construct() {
        
    }

    public function listar() {

        session_start();

        $msj = "Error consultando las etapas, por favor intente más tarde";
        $view = "../views/etapas.php";

        try {

            $dao = new ObraDao();
            $obra = new Obra();
            $id = 0;

            if (!isset($_POST["idObra"]) && isset($_SESSION['obra'])) {
                $obra = unserialize($_SESSION['obra']);
                $id = $obra->getId();
            } else {
                $id = $_POST["idObra"];
            }

            $obra = $dao->getObraById($id);

            $msj = "";
            $_SESSION['obra'] = null;
            if (isset($obra)) {
                $_SESSION['obra'] = serialize($obra);
            }
        } catch (Exception $e) {
            
        }

        $_SESSION['msj'] = $msj;
        return $view;
    }

    public function save() {

        session_start();

        $msj = "Error salvando la obra";
        $estatus = AJAX_ERROR;
        $id = 0;

        try {

            $obra = new Obra();
            $obra = unserialize($_SESSION['obra']);

            $dao = new EtapaDao();

            $etapa = new Etapa();
            $etapa->setId($_POST['id']);
            $etapa->setNombre(strtoupper($_POST['nombre']));
            $etapa->setContrato(strtoupper($_POST['contrato']));
            $etapa->setEdificios(strtoupper($_POST['edf']));
            $etapa->setViviendas(strtoupper($_POST['apto']));
            $etapa->setPersonas(strtoupper($_POST['pers']));
            $etapa->setFechaInicio(date('Y-m-d', strtotime($_POST['inicio'])));
            $etapa->setFechaFin(date('Y-m-d', strtotime($_POST['fin'])));
            $etapa->setObra($obra);

            $copy = $dao->getEtapaByName($etapa->getNombre(), $obra->getId());
            if ($etapa->getId() == 0) {
                if ($copy != null) {
                    $msj = "Ya existe una etapa con el mismo nombre, por favor verifique";
                    $etapa = null;
                } else {

                    $copy = $dao->getEtapaByContrato($etapa->getContrato());
                    if ($copy != null) {
                        $msj = "Ya existe una etapa con el mismo nro de contrato, por favor verifique";
                        $etapa = null;
                    } else {
                        $etapa = $dao->saveEtapa($etapa);
                    }
                }
            } else {
                if ($copy != null && $copy->getId() != $etapa->getId()) {
                    $msj = "Ya existe una etapa con el mismo nombre, por favor verifique";
                    $etapa = null;
                } else {
                    $copy = $dao->getEtapaByContrato($etapa->getContrato());
                    if ($copy != null) {
                        $msj = "Ya existe una etapa con el mismo nro de contrato, por favor verifique";
                        $etapa = null;
                    } else {
                        $etapa = $dao->updateEtapa($etapa);
                    }
                }
            }

            if (isset($etapa) && $etapa->getId() > 0) {
                $msj = "Etapa salvada satisfactoriamente";
                $estatus = AJAX_SUCCESSFUL;
                $id = $etapa->getId();
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus, 'id' => $id);

        return json_encode($responce);
    }

    public function query() {

        session_start();

        $responce = array('msj' => "Error consultando la etapa", 'estatus' => AJAX_ERROR);

        try {
            $dao = new EtapaDao();

            $etapa = new Etapa();
            $etapa = $dao->getEtapaById($_POST['id']);

            if (isset($etapa)) {
                $responce = array('msj' => "",
                    'estatus' => AJAX_SUCCESSFUL,
                    'id' => $etapa->getId(),
                    'nombre' => $etapa->getNombre(),
                    'contrato' => $etapa->getContrato(),
                    'inicio' => date('d/m/Y', strtotime($etapa->getFechaInicio())),
                    'fin' => date('d/m/Y', strtotime($etapa->getFechaFin())),
                    'edf' => $etapa->getEdificios(),
                    'apto' => $etapa->getViviendas(),
                    'pers' => $etapa->getPersonas());
            }
        } catch (Exception $e) {
            
        }

        return json_encode($responce);
    }

    public function delete() {

        session_start();

        $msj = "Error eliminando la etapa";
        $estatus = AJAX_ERROR;

        try {
            $dao = new EtapaDao();

            $etapa = new Etapa();
            $etapa = $dao->getEtapaById($_POST['id']);

            if (isset($etapa)) {
                $result = $dao->deleteEtapa($etapa);

                if ($result) {
                    $msj = "Etapa eliminada satisfactoriamente";
                    $estatus = AJAX_SUCCESSFUL;
                }
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus);

        return json_encode($responce);
    }

}

?>